#pragma once
#include <iostream>
#include <string>
#include <pthread.h>

namespace thread_pool
{
    class task
    {
    private:
        int _a;
        int _b;
        char _op;

    public:
        task() {}

        task(int a, int b, char op)
            : _a(a), _b(b), _op(op)
        {
        }

        std::string show()
        {
            std::string message=std::to_string(_a);
            message+=_op;
            message+=std::to_string(_b);
            message+="=?";
            return message;
        }

        int run()
        {
            int res = 0;
            switch (_op)
            {
            case '+':
                res = _a + _b;
                break;

            case '-':
                res = _a - _b;
                break;

            case '*':
                res = _a * _b;
                break;

            case '/':
                res = _a / _b;
                break;

            case '%':
                res = _a % _b;
                break;

            default:
                std::cout<<"error"<<std::endl;
                break;
            }
            std::cout<<"当前任务正在被:"<<pthread_self()<<"处理:  "<<_a<<_op<<_b<<"="<<res<<std::endl;
            return res;
        }

        int operator()()
        {
            return run();
        }

    };
}